package com.zybzzz.workapp.activity;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;

import com.zybzzz.workapp.R;

public abstract class SingleFragmentActivity extends AppCompatActivity {


    /**
     * 抽象方法，等待被实现，在下面的onCreate方法中会调用到该方法
     * 等同于实现了这个方法就实现了onCreate方法
     * 这个方法的作用是创建fragment并且返回
     * @param: []
     * @return: androidx.fragment.app.Fragment
     * @author: ZhangYiBo
     * @date: 2020/10/15
     */
    protected abstract Fragment createFragment();

//    @Override
//    protected void onCreate(@Nullable Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
//
//        FragmentManager fm=getSupportFragmentManager();
//        Fragment fragment=fm.findFragmentById(R.id.mainlist_fragment_container);
//
//        if (fragment==null){
//            fragment=createFragment();
//            fm.beginTransaction()
//                    .add(R.id.mainlist_fragment_container,fragment)
//                    .commit();
//        }
//    }


    /**
     * 只要实现这个类的抽象方法，onCreate方法就实现了，这样继承它的类就不用实现onCreate方法
     * 想法是好的，但是我想实际情况下并没有太多类去继承这个类
     * @param: [savedInstanceState]
     * @return: void
     * @author: ZhangYiBo
     * @date: 2020/10/15
     */
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentManager fm=getSupportFragmentManager();
        Fragment fragment=fm.findFragmentById(R.id.mainlist_fragment_container);

        if (fragment==null){
            fragment=createFragment();
            fm.beginTransaction()
                    .add(R.id.mainlist_fragment_container,fragment)
                    .commit();
        }
    }
}
